android实现数据的MD5加密并用SharedPreferences存储

概述

如果本地数据直接以明文的形式存储在手机上,是很不安全的。我们简单地谈谈MD5加密的java实现。

MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位的散列值,用于确保信息传输完整一致。java封装了这种算法的实现。

下面是java代码的实现:

   public static  String encoder(String password){
            StringBuffer buffer;
            /**
             * 1,信息摘要器
             */
            MessageDigest digest= null;
            try {
                digest = MessageDigest.getInstance("md5");
                /**
                 * 2,变成byte数组
                 */
                byte bytes[]=digest.digest(password.getBytes());
                buffer=new StringBuffer();
                /**
                 * 3,每个byte位与8个二进制数做与运算
                 */
                for(byte b:bytes){
                    int number=b & 0xff;
                    //int 类型转换为十六进制
                    String numberStr=Integer.toHexString(number);

                    if(numberStr.length()==1){
                        buffer.append("0");
                    }

                    buffer.append(numberStr);

                }
                return  buffer.toString();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
                return "";
            }

        }

实现了数据的加密,接下来就要实现数据的存储。在android中最常见的存储方式就是使用SharedPreferences和数据库。在这里我将SharedPreferences的用法封装成了一个类,如果在项目中多次使用,都要去实例化,多麻烦啊。

public class DataStore {

    public SharedPreferences sp;
    public Context context;
    {
        context=MyApplication.getContext();
        /**
         * 第一个参数相当于文件的名称,第二个参数表示操作模式,MODE_PRIVATE表示只有当前的应用程序可以访问,
         * MODE_MULTI_PROCESS则表示可以被多个进程操作。一般情况下,我们选择第一个作为操作模式的参数。
         */
        sp=context.getSharedPreferences("config",context.MODE_PRIVATE);
    }

    /**
     * 写入字符串数据
     * @param id
     * @param data
     */

    public void writeString(String id,String data){
        SharedPreferences.Editor editor=sp.edit();
        editor.putString(id,data);
        editor.commit();
    }

    /**
     * 读入字符串数据
     * @param id
     * @return
     */
    public String getStringData(String id){
        /**
         * 第一个参数是存储数据时设置的id,第二个参数表示如果你要取出的数据不存在(比如你传的id就不存在,数据当然就不存在了),
         * 返回的值
         */
        String data=sp.getString(id,"");
        return data;
    }
}

这里用到了全局的Context,所以需要自定义一个Application。

public class MyApplication extends Application {

    public static Context context;

    public static Context getContext(){
        return context;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context=getApplicationContext();
    }
}

自定义的Application一定要在清单文件中进行说明,在application标签下,添加:

 android:name="utitls.MyApplication"

关于SharedPreferences存储数据,这里是以字符串为例的。当然也可以存储整型和布尔类型的数据。

转眼间,国庆假期就马上结束了,时光匆匆!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值